ASP.NET Core-এ Routing একটি গুরুত্বপূর্ণ বিষয়, যা অ্যাপ্লিকেশনের ক্লায়েন্টের রিকোয়েস্টকে নির্দিষ্ট Controller Action-এ ম্যাপ করে। ASP.NET Core-এ রাউটিং করতে দুই ধরনের পদ্ধতি ব্যবহৃত হয়:
- Convention-based Routing
- Attribute Routing
Convention-based Routing
ধারণা
Convention-based Routing একটি centrally defined routing pattern ব্যবহার করে রিকোয়েস্টকে ম্যাপ করে। এটি সাধারণত Startup.cs ফাইলের মধ্যে UseEndpoints বা MapControllerRoute পদ্ধতির মাধ্যমে কনফিগার করা হয়।
ব্যবহার
এই পদ্ধতিতে রাউটিং প্যাটার্ন ডিফাইন করা হয় এবং সমস্ত রিকোয়েস্ট সেই প্যাটার্ন অনুসারে রুট হয়।
উদাহরণ:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
ব্যাখ্যা:
controller=Home: যদি রিকোয়েস্টে কোন নির্দিষ্ট কন্ট্রোলার উল্লেখ না থাকে, তাহলে ডিফল্ট কন্ট্রোলার হবে HomeController।action=Index: যদি কোন নির্দিষ্ট অ্যাকশন উল্লেখ না থাকে, তাহলে ডিফল্ট অ্যাকশন হবে Index।id?: এই অংশটি ঐচ্ছিক (?নির্দেশ করে)।
সুবিধা:
- সহজ এবং দ্রুত কনফিগার করা যায়।
- সব রাউটিং একটি কেন্দ্রীয় স্থানে সংজ্ঞায়িত হয়।
- ছোট এবং সাধারণ অ্যাপ্লিকেশনের জন্য কার্যকর।
সীমাবদ্ধতা:
- জটিল অ্যাপ্লিকেশনের জন্য অনুপযুক্ত।
- Controller এবং Action-এর মধ্যে বেশি নিয়ন্ত্রণ প্রয়োজন হলে কার্যকর নয়।
Attribute Routing
ধারণা
Attribute Routing একটি declarative approach ব্যবহার করে, যেখানে রাউটিং প্যাটার্ন সরাসরি Controller এবং Action Method-এ সংজ্ঞায়িত হয়। এটি কন্ট্রোলারের নির্দিষ্ট পাথ এবং প্যারামিটার নিয়ন্ত্রণের জন্য ব্যবহার করা হয়।
ব্যবহার
Attribute Routing করতে Route অ্যাট্রিবিউট ব্যবহার করা হয়। এটি প্রতিটি Controller বা Action Method-এর উপরে ডিক্লেয়ার করা হয়।
উদাহরণ:
Controller-এর স্তরে Attribute Routing:
[Route("products")]
public class ProductController : Controller
{
[Route("")]
public IActionResult Index()
{
return View();
}
[Route("details/{id}")]
public IActionResult Details(int id)
{
return View();
}
}
ব্যাখ্যা:
/products: Index অ্যাকশন কল করবে।/products/details/1: Details অ্যাকশন কল করবে যেখানেid=1।
Action Method-এর স্তরে Attribute Routing:
public class ProductController : Controller
{
[HttpGet("products/{id}")]
public IActionResult GetProduct(int id)
{
return View();
}
[HttpPost("products/create")]
public IActionResult CreateProduct(Product product)
{
return View();
}
}
সুবিধা:
- নির্দিষ্ট রাউটিং নিয়ন্ত্রণের জন্য কার্যকর।
- প্রতিটি Controller এবং Action-এ প্যাটার্ন কাস্টমাইজ করা যায়।
- জটিল অ্যাপ্লিকেশনে ব্যবহারের জন্য আদর্শ।
- HTTP Method (GET, POST) সহ রাউটিং প্যাটার্ন নির্ধারণ করা যায়।
সীমাবদ্ধতা:
- বড় অ্যাপ্লিকেশনে রাউটিং পরিচালনা করা জটিল হতে পারে।
- Convention-based Routing-এর তুলনায় অনেক বেশি বিস্তারিত কনফিগারেশন প্রয়োজন।
Convention-based Routing বনাম Attribute Routing
| বৈশিষ্ট্য | Convention-based Routing | Attribute Routing |
|---|---|---|
| ডিফাইন করার পদ্ধতি | Startup.cs-এ কেন্দ্রিয়ভাবে সংজ্ঞায়িত। | সরাসরি Controller বা Action Method-এ। |
| নিয়ন্ত্রণের মাত্রা | সীমিত, সাধারণ প্যাটার্নের জন্য। | Controller এবং Action অনুযায়ী কাস্টম। |
| সহজতা | সহজ এবং দ্রুত। | জটিল এবং বিস্তারিত। |
| উপযুক্ততা | সাধারণ অ্যাপ্লিকেশনের জন্য উপযুক্ত। | জটিল অ্যাপ্লিকেশনের জন্য আদর্শ। |
| HTTP Method সমর্থন | ডিফল্টভাবে HTTP Method নির্দিষ্ট নয়। | নির্দিষ্ট HTTP Method ব্যবহার করা যায়। |
ASP.NET Core-এ রাউটিং সংমিশ্রণ
ASP.NET Core-এ Convention-based Routing এবং Attribute Routing একসঙ্গে ব্যবহার করা যায়। তবে জটিল অ্যাপ্লিকেশনের ক্ষেত্রে Attribute Routing বেশি কার্যকর, কারণ এটি নির্দিষ্ট নিয়ন্ত্রণ এবং কাস্টমাইজেশনের সুযোগ দেয়।
Routing ASP.NET Core-এ অ্যাপ্লিকেশন স্ট্রাকচার এবং ক্লায়েন্ট রিকোয়েস্ট পরিচালনার একটি অপরিহার্য অংশ। সঠিক রাউটিং প্যাটার্ন নির্বাচন অ্যাপ্লিকেশনের কার্যকারিতা এবং ব্যবস্থাপনা সহজ করে।
Read more